﻿using System;
using System.ComponentModel.DataAnnotations.Schema;

namespace ContaPlanner.Models
{
    [NotMapped]
    public class Movimiento
    {
        public DateTime Fecha { get; set; }
        public Cuenta OtraCuenta { get; set; }
        public Ubicacion OtraUbicacion { get; set; }
        public decimal ImporteMas { get; set; }
        public decimal ImporteMenos { get; set; }
        public decimal Saldo { get; set; }
        public TipoAsiento Tipo { get; set; }
        public Categoria Categoria { get; set; }

        public bool SaldoEsNegativo { get { return Saldo < 0; } }
        public bool ImporteEsMas { get { return ImporteMas > 0; } }
        public bool ImporteEsMenos { get { return ImporteMenos > 0; } }
        public bool ImporteMasEsCero { get { return ImporteMas == 0; } }
        public bool ImporteMenosEsCero { get { return ImporteMenos == 0; } }
        public bool OtraUbicacionExiste { get { return OtraUbicacionNombre != null; } }
        public bool TipoEsNomina { get { return Tipo == TipoAsiento.Nomina; } }

        public string OtraCuentaNombre { get { return OtraCuenta != null ? OtraCuenta.Nombre : null; } }
        public string OtraUbicacionNombre { get { return OtraUbicacion != null ? OtraUbicacion.Nombre : null; } }
        public string CategoriaNombre { get { return Categoria != null ? Categoria.Nombre : null; } }
        public string CategoriaNombreCompleto { get { return Categoria != null ? Categoria.NombreCompleto : null; } }

        public override string ToString()
        {
            return String.Format("{0} de/a {1}: +{2:C} -{3:C} = {4:C} ({5}, {6})",
                Fecha.ToShortDateString(),
                OtraCuenta,
                ImporteMas,
                ImporteMenos,
                Saldo,
                Tipo.Descripcion(),
                Categoria.NombreCompleto
            );
        }

    }
}
